package edu.gatech.oad.antlab.person;

import java.util.HashSet;

/**
 *  A simple class for person 2
 *  returns their name and a
 *  modified string 
 *
 * @author Bob
 * @version 1.1
 */
public class Person2 {
    /** Holds the persons real name */
    private String name;
	 	/**
	 * The constructor, takes in the persons
	 * name
	 * @param pname the person's real name
	 */
	 public Person2(String pname) {
	   name = pname;
	 }
	/**
	 * This method should take the string
	 * input and return its characters in
	 * random order.
	 * given "gtg123b" it should return
	 * something like "g3tb1g2".
	 *
	 * @param input the string to be modified
	 * @return the modified string
	 */
	private static String calc(String input) {
	  HashSet<Integer> selectedPositions = new HashSet<Integer>(input.length());
	  char[] inputHolder = input.toCharArray();
	  char[] outputHolder = new char[input.length()];
	  int index = 0;
	  while (selectedPositions.size() < input.length()){
		  int random = (int)(Math.random() * (input.length()));
		  if (!selectedPositions.contains(random)) {
			  outputHolder[index] = inputHolder[random];
			  selectedPositions.add(random);
			  index++;
		  }
	  }
	  String ret = "";
	  for(int i = 0; i < input.length();i++)
		  ret = ret + outputHolder[i];
	  return ret;
	  
	}
	/**
	 * Return a string rep of this object
	 * that varies with an input string
	 *
	 * @param input the varying string
	 * @return the string representing the 
	 *         object
	 */
	public String toString(String input) {
	  return name + calc(input);
	}
	public static void main(String[] args) {
		System.out.println(calc("and245"));
	}
}
